﻿/*
 * TaskQueue.cpp
 *
 *  Created on: 2016年2月22日
 *      Author: Administrator
 */

#include "core/def.h"
#include "TaskQueue.h"
#include "../ITask.h"
namespace eyas{
namespace core{
TaskQueue::TaskQueue(uint32_t capacity)
:capacity_(capacity){

}

TaskQueue::~TaskQueue() {

}
bool TaskQueue::putTask(ITask* task){
	std::unique_lock<std::mutex> lck (mutex_);
	if(this->taskQueue_.size() >= this->capacity_){
		return false;
	}
	this->taskQueue_.push(task);
	return true;
}
ITask* TaskQueue::popTask(){
	std::unique_lock<std::mutex> lck (mutex_);
	if(this->taskQueue_.size() <= 0){
		return nullptr;
	}
	ITask* task = this->taskQueue_.front();
	this->taskQueue_.pop();
	return task;
}
}
}
